package br.com.salao.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.codehaus.jackson.annotate.JsonIgnore;

@XmlRootElement
@Entity
@Table(name="estado")
public class Estado implements Serializable {


	private static final long serialVersionUID = 1L;
	/** Codigo */
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="id",nullable = false)
	private int id;

	/** Sigla do estado (ex: SP) */
	@Column(name="sigla_estado",nullable = false)
	private String sigla;

	/** Nome do estado */
	@Column(name="nome_estado",nullable = true, length = 40)
	private String nome;

	@OneToMany(mappedBy = "estado")
	private Set<Cidade> cidades = new HashSet<Cidade>();
	
	@ManyToOne
	@JoinColumn(name = "id_pais", nullable = false)
	private Pais pais = new Pais();
	
	@Temporal(TemporalType.DATE)
	private Date created = new Date();

	//Gets e Sets
	
	@XmlElement
	public String getSigla() {
		return sigla;
	}
	@XmlElement
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}
	@XmlElement
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
	
	@XmlElement
	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}
	
	@XmlElement
	@JsonIgnore
	public Set<Cidade> getCidades() {
		return cidades;
	}
	public void setCidades(Set<Cidade> cidades) {
		this.cidades = cidades;
	}
	@XmlElement
	public Date getCreated() {
		return created;
	}

	public void setCreated(Date created) {
		this.created = created;
	}	
}
